package presentation.view.funcionario;

import domain.controller.FuncionarioController;
import domain.controller.MedicoController;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import domain.pojo.Funcionario;
import presentation.view.JanelaInicial;
import presentation.view.MainFrame;
import util.DefaultException;
import util.TableHelper;

/**
 *
 * @author Owner
 */
public class FuncionarioListar extends TableHelper{
    static JFrame Janela;
    
    /* 
     * 0 - > Id, 1 - > Nome, 2 - > Especialidade, 3 - > Login, 4 - > Senha
     */
    Object[][] data;
    String[] nomeDasColunas = {"No.","Nome"};
    int quantidade;
    private boolean admin = false;
    private String texto = "funcionário";

    public FuncionarioListar(boolean admin) {
	if(admin){
	    this.admin = admin;
	    this.texto = "administrador";
	}
	
	FuncionarioController fc = new FuncionarioController();
	if(admin){
	    quantidade = fc.getQuantidadeAdmin();
	    data = fc.getDadosAdmin(quantidade);
	}else{
	    quantidade = fc.getQuantidadeFunc();
	    data = fc.getDadosFunc(quantidade);
	}
	
	iniciaTabela( nomeDasColunas, data, quantidade,1,"Nome");
	this.setOpaque(true);
    }

    @Override
    public void eventoAlterar(String helper) {
	int row = getAtual(helper);
	Funcionario funcionario = new Funcionario(Integer.parseInt(data[row][0].toString()),
								   data[row][2].toString(),
								   data[row][3].toString(),
								   data[row][1].toString(),
					      Boolean.parseBoolean(data[row][4].toString()));
	MainFrame.getInstance().alterarPainel(new FuncionarioAdicionarAlterar(funcionario,admin), this);
    }

    @Override
    public void eventoExcluir(String helper){
	int row = getAtual(helper);
	String nome = data[row][1].toString();

	if( JOptionPane.showConfirmDialog(null,	"Confirma remoção do "+texto+" "+ nome + "?", "POO", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ){
	    MedicoController modelo = new MedicoController();
	    Funcionario funcionario = new Funcionario(Integer.parseInt(data[row][0].toString()),
								   data[row][2].toString(),
								   data[row][3].toString(),
								   data[row][1].toString(),
					      Boolean.parseBoolean(data[row][4].toString()));
	    modelo.excluir( Integer.parseInt(data[row][0].toString()));
	    MainFrame.getInstance().alterarPainel(new FuncionarioListar(admin), JanelaInicial.getInstance());
	}
    }

    @Override
    public void eventoAdicionar() {
	MainFrame.getInstance().alterarPainel(new FuncionarioAdicionarAlterar(null,admin), this);
    }

    @Override
    public String getNomeButtonAdicionar() {
	return "Adicionar novo "+texto;
    }

    @Override
    public void eventoJanelaDetalhe(String helper) {
	int row = getAtual(helper);
	Funcionario funcionario = new Funcionario(Integer.parseInt(data[row][0].toString()),
								   data[row][2].toString(),
								   data[row][3].toString(),
								   data[row][1].toString(),
					      Boolean.parseBoolean(data[row][4].toString()));
	JPanel painel = new FuncionarioDetalhe(funcionario);
	
	JOptionPane.showMessageDialog(null, painel, "Detalhes", JOptionPane.INFORMATION_MESSAGE);
    }
}
